package com.swak.paxos.statemachine;

import com.swak.paxos.Value;

/**
 * 状态机.
 * 
 * @author 618lf
 */
public interface StateMachine {

	int FacSmID = -2;
	int SystemSmID = -1;
	int MasterSmID = 0;

	/**
	 * 状态机编号
	 * 
	 * @return
	 */
	int getSmID();

	/**
	 * 执行状态机
	 * 
	 * @param groupIdx 分组
	 * @param instanceID 实例
	 * @param value paxos value
	 * @return 是否执行成功
	 */
	boolean execute(int groupIdx, long instanceID, Value value);
}
